From d42bb1640f7e9301643179f938d5cc21c06d4aed Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Fri, 16 Dec 2005 04:57:27 +0100 Subject: [PATCH] Slight fix to BIOS e820 bug workaround. Remove the check for whether e820 list is below 1MB: all bootloaders place it below 1MB so teh check is ineffective and, in any case, SYSLINUX has the same issue as GRUB (does not pre-initialize the memory area that e820 function writes to). Signed-off-by: Keir Fraser --- xen/arch/x86/setup.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index 3f97fd867e..70a22d5a76 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -315,19 +315,15 @@ void __init __start_xen(multiboot_info_t *mbi) memory_map_t *map = __va(mbi->mmap_addr + bytes); /* - * This is a gross workaround for a BIOS/GRUB bug. GRUB does + * This is a gross workaround for a BIOS bug. Some bootloaders do * not write e820 map entries into pre-zeroed memory. This is * okay if the BIOS fills in all fields of the map entry, but * some broken BIOSes do not bother to write the high word of * the length field if the length is smaller than 4GB. We * detect and fix this by flagging sections below 4GB that - * appear to be larger than 4GB in size. We disable this check - * for mbootpack and syslinux (which we can detect because they - * place the mmap_addr list above 1MB in memory). + * appear to be larger than 4GB in size. */ - if ( (mbi->mmap_addr < 0x100000) && - (map->base_addr_high == 0) && - (map->length_high != 0) ) + if ( (map->base_addr_high == 0) && (map->length_high != 0) ) { e820_warn = 1; map->length_high = 0; -- 2.30.2